import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;



public class FileTest {
	public static void main1(String[] args) {
		String path= File.separator+"Users"+File.separator+"John"+File.separator+"Desktop";
		//separator是斜杠
		System.out.println(path);

		String classpath=System.getProperty("java.class.path");
		System.out.println(classpath);

		//pathSeparator是一个分号
		String [] paths=classpath.split(File.pathSeparator);
		for (String s : paths) {
			System.out.println("Classpath"+s);
		}
	}

	public static void main2(String[] args) {
		File file=new File("D:\\IdeaCode\\javacode\\Education\\src\\FileTest.java");
		System.out.println(file.toString());
		System.out.println(file.exists());
		System.out.println("====================");

		File file1=new File("D:\\IdeaCode\\javacode\\Education","\\src\\FileTest.java");
		System.out.println(file1.getName());
		System.out.println(file1.getPath());
		System.out.println(file1.getParent());
		System.out.println(file1.exists());
		System.out.println("================");

		File file2=new File("D:\\IdeaCode\\javacode\\Education","\\src\\FileTest01.java");
		System.out.println(file2.getName());
		System.out.println(file2.getPath());
		System.out.println(file2.getParent());
		System.out.println(file2.exists());

		//相对路劲：是当前的项目路径
		//绝对路径：带盘符的全路径
	}

	public static void main3(String[] args) throws IOException {
		String path="D:\\abc\\cc\\ccc\\cc.txt";
		File file=new File(path);
		System.out.println(file.getPath());
		System.out.println(file.getParent());

		//首先第一步，这个文件在不在，在的话就不需要进行创建了
		//创建失败的话，再看父文件在不在，不在的话进行创建父文件，
		//在父文件创建成功的前提下，进行创建子文件
		if(file.exists()) {
			System.out.println("文件已经存在，无需创建");
			return ;
		}
		File parent=file.getParentFile();
		if(!parent.exists()) {
			System.out.println("父文件不在，创建父文件");
			parent.mkdirs();
		}
		if(parent.exists()) {
			boolean flg=file.createNewFile();
			System.out.println(flg?"创建成功":"创建失败");
		}
		//System.out.println(file.createNewFile());
		//这个创建文件的是在ccc下创建
		//父文件不存在显示的是系统找不到指定路径
	}
	public static void main4(String[] args) throws IOException {

		File path=new File("D:"+File.separator+"abcd"+File.separator+"io");
		System.out.println(path.getPath());
		if(!path.exists()) {
			System.out.println("文件不存在");
			path.mkdirs();
		}
		String filename="abc.txt";
		File file=new File(path,filename);
		if(file.exists()) {
			System.out.println("文件已经存在，进行后续操作");
			display(file);
		} else {
			System.out.println("文件不存在，所以来到这一步");
			if (!path.exists()) {
				System.out.println("父文件不存在，创建父文件");
				boolean flg=path.mkdirs();
				System.out.println(flg?"创建成功":"创建失败");
			} else {
				boolean flg= file.createNewFile();
				System.out.println(flg);
				display(file);
			}
		}
	}
	private static void display(File file) {
		System.out.println("可读属性：" + file.canRead());
		System.out.println("可写属性：" + file.canWrite());
		System.out.println("文件路径：" + file.getPath());
		System.out.println("文件名字：" + file.getName());
		System.out.println("绝对路径：" + file.getAbsolutePath());
		System.out.println("是否隐藏：" + file.isHidden());
		System.out.println("文件大小" + file.length());
		System.out.println("最后一次修改时间：" + file.lastModified());
		System.out.println("-----------------------------------------");
	}

	public static void main(String[] args) {
		File file=new File("D:\\abc");
		//将每个文件的名字或者是目录的名字显示出来，并不是文件
		String [] list=file.list(new MyFileFilter());

		for (String file1:list) {
			System.out.println(file1);
		}
		System.out.println("================");
		//这里直接写一个lambda，实现过滤文件，将文件保留下来。
		File [] files=file.listFiles((file1)-> {
			return file1.isFile();
		});
		//这里显示出来的直接是文件的名字
		for (File file1:files) {
			System.out.println(file1.getAbsolutePath()+(file1.isFile()?"文件":"目录"));
		}
	}
}
class MyFileFilter implements FilenameFilter {
	@Override
	public boolean accept(File dir, String name) {
		//这里必须得拼接成一个文件才能进行判断一个文件是不是目录还是文件夹
		File file=new File(dir,name);
		return file.isDirectory();
	}
}
